﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace VirtualTournaments.Biz.Bets
{
    public abstract class Bet
    {
        private double _moneyWagered = 0;
        private double _odds = 0;

        /// <summary>
        /// Cantidad de dinero apostado
        /// </summary>
        public double MoneyWagered
        {
            get { return _moneyWagered; }
            set { _moneyWagered = value; }
        }       

        /// <summary>
        /// Es la cuota que pagará la apuesta en caso de ser ganada. Para saber el dinero a cobrar en caso de ganar hay que multiplicar Odds * MoneyWagered
        /// </summary>
        public double Odds
        {
            get { return _odds; }
            set { _odds = value; }
        }

        public abstract void calculateOdds(Agency agency, Bet[] otherBets);

        public double getPayment(){
            if (this.won()){
                return this._moneyWagered * _odds;
            }else{
                return 0;
            }
        }

        /// <summary>
        /// Liquida la apuesta. Si la puede liquidar porque el evento ya sucedió cambia su estado a Liquidado, sino continua con el estado actual.
        /// Devuelve true si se pudo liquidar, false en caso contrario. Si no se pudo liquidar hay que esperara que termine el partido.
        /// </summary>
        public bool SettleBet()
        {
            return true;
        }

        public abstract bool won();
    }
}
